import pyecharts.options as opts
from pyecharts.charts import Line

"""
Gallery 使用 pyecharts 1.1.0
参考地址: https://echarts.apache.org/examples/editor.html?c=line-simple

目前无法实现的功能:
暂无
"""

#所以对于实现的折线图  重点应该是组件数据 ， 而下面的是人家开发好的组件  咱直接使用即可
# x_data = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
# y_data = [820, 932, 901, 934, 1290, 1330, 1320]
#
#
# (
#     Line()
#     .set_global_opts(
#         tooltip_opts=opts.TooltipOpts(is_show=False),
#         xaxis_opts=opts.AxisOpts(type_="category"),
#         yaxis_opts=opts.AxisOpts(
#             type_="value",
#             axistick_opts=opts.AxisTickOpts(is_show=True),
#             splitline_opts=opts.SplitLineOpts(is_show=True),
#         ),
#     )
#     .add_xaxis(xaxis_data=x_data)
#     .add_yaxis(
#         series_name="",
#         y_axis=y_data,
#         symbol="emptyCircle",
#         is_symbol_show=True,
#         label_opts=opts.LabelOpts(is_show=False),
#     )
#     .render("basic_line_chart.html")
# )

#使用分布的方式去写
#创建Line对象,折线图对象
line = Line()
#准备x轴数据
#打开文件
#cvs文件的编码是gbk
f = open("分省年度数据.csv" , "r" , encoding="gbk")
#输出文件的内容  方便阅读
# for line_tmp in f:
#     print(line_tmp , end="")
# f.close()

#给X轴添加数据
#读取所有行的数据
line_datas = f.readlines()
f.close()


#先删除前面三个行(元素)
for _ in range(3):
    line_datas.pop(0)

#得到x轴的数据
#得到 ['地区,2023年,2022年,2021年,2020年,2019年,2018年,2017年,2016年,2015年,2014年\n]
#这里用到的都是python的基础知识，所以 基础为纲  你走的再远 再大 其实都是基础所组成的 所以
#只要基础好 就没问题
x_data_year = line_datas.pop(0).replace("\n" , "").split(",")
x_data_year.pop(0)#删除第一个元素['2023年', '2022年', '2021年', '2020年', '2019年', '2018年', '2017年', '2016年', '2015年', '2014年']
#将时间线转换成从小到大【目前是从大到小】，这些都是基础知识
x_data_year.reverse()#['2014年', '2015年', '2016年', '2017年', '2018年', '2019年', '2020年', '2021年', '2022年', '2023年']

#给Y轴添加数据
"""
    分析:这里有四组数据,分别是北京,上海,天津，重庆的近20年的人口数据
"""
#创建四个列表,存放 北京 上海  天津 重庆 近20年的人口数据
y_data_bj = []
y_data_sh = []
y_data_tj = []
y_data_cq = []

#遍历 line_datas 得到 北京 上海  天津 重庆的近20年的人口数据
for line_data in line_datas:
    line_data = line_data.replace("\n" , "").split(",")
    if line_data[0] == "北京市":
        line_data.pop(0)
        line_data.reverse()#从2003-2022年的排序
        y_data_bj = line_data
    elif line_data[0] == "上海市":
        line_data.pop(0)
        line_data.reverse()
        y_data_sh = line_data
    elif line_data[0] == "天津市":
        line_data.pop(0)
        line_data.reverse()
        y_data_tj = line_data
    elif line_data[0] == "重庆市":
        line_data.pop(0)
        line_data.reverse()
        y_data_cq = line_data

#添加x轴的数据
line.add_xaxis(x_data_year)
#添加Y轴的数据
#以前因为没有学过 所以不懂 现在学了 就懂了  就行了
line.add_yaxis(series_name="重庆市历年人口",y_axis = y_data_cq, label_opts=opts.LabelOpts(is_show=False))
line.add_yaxis(series_name="北京市历年人口",y_axis = y_data_bj, label_opts=opts.LabelOpts(is_show=False))
line.add_yaxis(series_name="上海市历年人口",y_axis = y_data_sh, label_opts=opts.LabelOpts(is_show=False))
line.add_yaxis(series_name="天津市历年人口",y_axis = y_data_tj, label_opts=opts.LabelOpts(is_show=False))

#设置全局配置项
#因为没有学过  所以不会
#现在学了 所以会了
#做一件事情的时候 先做主要的  至于其他的  有时间精力就做一下  没时间和精力就不做了
line.set_global_opts(title_opts=opts.TitleOpts(title="2004-2024年直辖市总人口" , pos_left="center" , pos_bottom="1%" , title_link="https://www.xiaobangcai.com:8443/liuhouse_blog"))

#生成文件
line.render("line_4_city_popualation.html")
